1. Technical Field
The invention generally relates to the field of software testing and debugging and in particular to a generating an execution of a program that reaches a given failure point (e.g., a “bug”).
2. Background Information
Many techniques exist for finding errors (“bugs”) in software programs. One technique is to reproduce the bug by executing the program in such a way that the bug deterministically manifests itself. The program's execution can then be played back and observed in a debugger. The debugger enables a software developer to observe the buggy behavior and use traditional techniques to find the bug, such as step-by-step execution and data structure dumps. Before a program can be executed in such a way that a bug deterministically manifests itself, it is necessary to determine how to force the program to arrive at the relevant failure point. This is difficult to do.